home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 7.5 KB | 232 lines |
- 10 REM ABM 2 WRITTEN BY ED DAVIS...THIS VERSION 7/18/82
- 20 GOSUB 1930:KEY OFF:ABM%=0
- 25 GOSUB 10000
- 30 CLS:SCREEN 0,1:LOCATE 3,10:PRINT"Before we begin...."
- 32 LOCATE 23,30:COLOR 1:PRINT"EMD 7/82";:COLOR 7
- 35 LOCATE 6,3:COLOR 14:PRINT"ENEMY ROCKET PERFORMANCE HANDICAP:":COLOR 7:PRINT:PRINT" 0=MISSION-IMPOSSIBLE 1=VERY FAST":PRINT:PRINT" 2=EXPERT ";:COLOR 2:PRINT" 3=NORMAL":PRINT
- 36 COLOR 7:INPUT ;" 4=PRACTICE 5=JUNIOR ";RS%
- 40 DIM T%(1,5):DIM M(6,15):DIM CH%(66)
- 50 GOSUB 1010
- 60 GOTO 770
- 70 ' BEGIN MAIN ROUTINE
- 80 REM STICK COMMANDS WERE HERE
- 90 IF ABM% THEN GOTO 170
- 100 GOTO 1600
- 110 PUT(LX,LY),CH%:PUT(X,SY),CH%:LX=X:LY=SY
- 120 IF ABM% THEN GOTO 170
- 130 IF B%=0 GOTO 260
- 140 B%=0
- 150 DX=LX+10:DY=LY+10:LINE (168,160)-(DX,DY),3:ABM%=1:RR=1
- 160 PUT(LX,LY),CH%:LX=158:LY=150:PUT (LX,LY),CH%
- 170 RR=1+RR:CIRCLE (DX,DY),RR,2
- 180 IF RR<11 THEN GOTO 260
- 190 ABM%=0:LINE (168,160)-(DX,DY),0:CIRCLE (DX,DY),10,0:LINE (DX-11,DY-10)-(DX+11,DY+10),0,BF
- 200 I=-1
- 210 I=I+1:IF I>15 THEN GOTO 260
- 220 IF M(0,I)=0 THEN GOTO 210
- 230 IF ABS(M(2,I)-DX)<WH%+1 AND ABS (M(3,I)-DY)<WH% THEN PLAY "MBL16O0DCAB":GOTO 250
- 240 GOTO 210
- 250 LINE (M(5,I),M(6,I))-(M(2,I),M(3,I)),O:M(0,I)=0:SC=SC+(10-WH%)
- 260 IF CT%< RS% THEN CT%=CT%+1:GOTO 70
- 270 CT%=0
- 280 N=0:FOR I=0 TO 15
- 290 IF M(0,I)<>1 THEN N=N+1:GOTO 330
- 300 M(2,I)=M(2,I)+M(4,I):M(3,I)=M(3,I)+1:PSET (M(2,I),M(3,I)),3
- 310 IF M(3,I)>159 THEN GOSUB 460
- 320 IF (M(3,I)>70) AND (FLAG%=0) THEN FLAG%=123:MIRV%=I:SOUND 50,2
- 330 NEXT I:IF MR=0 AND N>15 THEN GOTO 1370
- 340 IF FLAG%=123 THEN GOTO 400
- 350 IF RND(1)<0.96 THEN GOTO 70
- 360 I=0
- 370 I=I+1:IF M(0,I)=2 THEN M(0,I)=1:GOTO 70
- 380 IF I=11 THEN LOCATE 1,3:PRINT "ENEMY HAS LAUNCHED ALL MISSLES":MR=0:GOTO 70
- 390 GOTO 370
- 400 FLAG=-1:N=0:PT%=M(1,MIRV%):TT%=PT%+1
- 410 N=N+1:TT%=TT%+1:IF TT%>5 THEN TT%=TT%-6
- 420 I=N+11: M(0,I)=1:M(1,I)=TT%:M(2,I)=M(2,MIRV%):M(3,I)=M(3,MIRV%):M(5,I)=M(2,I):M(6,I)=M(3,I)
- 430 M(4,I)=(T%(1,TT%)-M(5,I))/90
- 440 IF N<4 THEN FLAG%=-1:GOTO 410
- 450 GOTO 70
- 460 ' MISSLE EXPLODE
- 470 FOR R=6 TO 36:IF R<30 THEN CIRCLE (M(2,I),160),R,2
- 480 CIRCLE (M(2,I),160),R-5,0:SOUND 36+3*R,1
- 490 NEXT R
- 500 T%(0,M(1,I))=0:LINE(M(5,I),M(6,I))-(M(2,I),M(3,I)),0
- 510 M(0,I)=0
- 520 FOR I=0 TO 5:IF T%(0,I)=1 THEN RETURN
- 530 NEXT I:RETURN 540
- 540 REM ALL CITIES HAVE BEEN DESTROYED
- 550 CLS:COLOR 4,7:LOCATE 6,9:PRINT"YOU SHOULD BE DEMOTED!"
- 560 LOCATE 10,5:PRINT"ALL CITIES HAVE BEEN DESTROYED"
- 570 LOCATE 15,6 :PRINT"YOUR SCORE IS ";SC;" POINTS."
- 580 LOCATE 17,2:PRINT"THE HIGHEST SCORE TODAY IS ";HSC;" POINTS."
- 590 LOCATE 24,5:PRINT"DO YOU WISH TO PLAY AGAIN (Y/N)?"
- 600 IF SC>HSC THEN HSC=SC
- 610 K$=INKEY$:IF K$="" THEN 610
- 620 IF K$="Y" OR K$="y" THEN GOTO 60
- 630 IF K$="N" OR K$="n" THEN CLS:END
- 640 GOTO 610
- 650 END
- 660 FOR I=0 TO 11
- 670 M(0,I)=2:M(5,I)=INT(RND(1)*280)+20:M(2,I)=M(5,I):M(6,I)=0:M(3,I)=0
- 680 NEXT I
- 690 FOR I=0 TO 11
- 700 II=I:IF I>5 THEN II=I-6
- 710 M(4,I)=(T%(1,II)-M(5,I))/160:M(1,I)=II
- 720 NEXT I
- 730 M(0,0)=1:REM THIS ENABLES ONLY ONE MISSLE ******
- 740 MR=16:' SET NUMBER OF MISSLES
- 750 RETURN
- 760 STOP
- 770 ' >>>>>>> INITIATION <<<<<<<<
- 780 ' ED DAVIS 9-1-82 LEVEL 1
- 790 NM%=11:FLAG%=0:MIRV%=33:SC=0:X=100:Y=100:LX=100:LY=100
- 800 RANDOMIZE VAL(RIGHT$(TIME$,2))
- 810 SCREEN 1,0:COLOR 0,1:WIDTH 40:KEY OFF:CLS
- 820 CIRCLE (110,110),5,3
- 830 LINE (100,110)-(105,110):LINE (115,110)-(120,110)
- 840 LINE (110,100)-(110,105):LINE (110,115)-(110,120)
- 850 GET (100,100)-(120,120),CH%:CLS
- 860 FOR I= 0 TO 5
- 870 T%(0,I)=1:T%(1,I)=48*(I+1)
- 880 NEXT I
- 890 GOSUB 660:REM TARGETING ROUTINE 12 MISSLES (6 TARGETS)
- 900 '>> DRAW AND LABEL CITIES <<
- 910 SCREEN 1,0:COLOR 0,0
- 920 CT$="U2R4U18R7D8R3D3R3U9R3D7R5D4R3D5R5D2"
- 930 CT2$="U5R1U3R1D3R2U3R1D3R2U3R1D3R2U3R1D3R2D3R1U1R1U10R1U1R3D1R1D6R3U10R4D14R5D3"
- 940 CT3$="U20R6D18R1U5R2U8E2F2D5R1D9R2U9R1U9R4D13R3U9R6D5R2D10"
- 950 PSET(0,180):DRAW "R32;X"+VARPTR$(CT2$)+"R16;X"+VARPTR$(CT$)
- 960 DRAW "R16;X"+VARPTR$(CT3$)+"R5U10R6D10R5;X"+VARPTR$(CT$)+"R16;X"+VARPTR$(CT2$)+"R16;X"+VARPTR$(CT$)+"R16;"
- 970 PAINT (120,190),3
- 980 LOCATE 25,5:PRINT"BTV";:LOCATE 25,11:PRINT "FSH";:LOCATE 25,17:PRINT"HPN";:LOCATE 25,24:PRINT"MAN";:LOCATE 25,30:PRINT "RAL";:LOCATE 25,36:PRINT"BOC";:LOCATE 1,1:PRINT"";
- 990 LX=120:LY=100:PUT (120,100),CH%:BOOM%=0
- 1000 GOTO 70
- 1010 ' INSTRUCTIONS
- 1020 SCREEN 0,1:COLOR 1,0:WIDTH 40:KEY OFF:CLS
- 1030 LOCATE 1,10:COLOR 21:PRINT "ANTI-BALLISTIC-MISSILE
- 1040 LOCATE 2,16:COLOR 5:PRINT"BY ED DAVIS"
- 1050 LOCATE 4,5:COLOR 7:PRINT "You are the commander of an"
- 1060 LOCATE 5,3:PRINT "anti-ballistic missile defense system."
- 1070 LOCATE 6,3:PRINT "Your mission is to defend the IBM"
- 1080 LOCATE 7,3:PRINT "East coast sites from the enemy."
- 1090 LOCATE 9,5:PRINT "The enemy has 12 missiles to fire"
- 1100 LOCATE 10,3:PRINT "at your 6 locations. Your missiles"
- 1110 LOCATE 11,3:PRINT "will destroy his if within range."
- 1120 LOCATE 12,3:PRINT "You may choose the megatonnage of"
- 1130 LOCATE 13,3:PRINT "your missiles, but will get a higher"
- 1140 LOCATE 14,3:PRINT "score with smaller warhead sizes."
- 1150 LOCATE 15,3:PRINT "The ememy does have MIRV capability."
- 1160 LOCATE 18,3:PRINT "WHAT SIZE (3-9) WARHEAD DO YOU WANT?:"
- 1170 LOCATE 20,3:PRINT " 3=SMALL (EXPERT)"
- 1180 LOCATE 21,3:COLOR 2:PRINT " 4=NORMAL(GOOD)":COLOR 7
- 1190 LOCATE 22,3:PRINT " 5=BIG (BEGINNER)
- 1200 LOCATE 23,3:PRINT " 9=WOW! (CHICKEN)
- 1210 DEF SEG=0:POKE 1050,PEEK(1052)
- 1220 K$=INKEY$:IF K$="" THEN 1220
- 1230 IF VAL(K$)>2 THEN WH%=VAL(K$) ELSE GOTO 1220
- 1240 CLS:LOCATE 3,18:SCREEN 0,1
- 1250 PRINT" **** MISSILE CONTROLS FOR ABM2 ****
- 1260 LOCATE 6,3:PRINT"YOU CONTROL THE TARGET AREA OF YOUR"
- 1270 PRINT"ABM'S THRU THE USE OF THE DIRECTIONAL"
- 1280 PRINT"KEYS:":PRINT
- 1290 COLOR 20:PRINT CHR$(24);:COLOR 7:PRINT " -RAISES SIGHTS"
- 1300 COLOR 20:PRINT CHR$(25);:COLOR 7:PRINT " -LOWERS SIGHTS"
- 1310 COLOR 20:PRINT CHR$(26);:COLOR 7:PRINT " -MOVES SIGHTS TO RIGHT"
- 1320 COLOR 20:PRINT CHR$(27);:COLOR 7:PRINT " -MOVES SIGHTS TO LEFT"
- 1330 COLOR 20:PRINT "(Esc)";:COLOR 7:PRINT" -KEY LAUNCHES MISSILES"
- 1340 LOCATE 23,5:PRINT"PRESS ANY KEY TO BEGIN....GOOD LUCK!";
- 1350 I$=INPUT$(1)
- 1360 RETURN
- 1370 ' CITIES NOT ALL DESTROYED
- 1380 NT%=0:FOR I=0 TO 5:NT%=NT%+T%(0,I):NEXT I
- 1390 CLS:COLOR 9,7
- 1400 PLAY"MBCDEFAB"
- 1410 LOCATE 4,11:PRINT " CONGRATULATIONS! "
- 1420 LOCATE 8,5:PRINT" YOU HAVE WON THE BATTLE.."
- 1430 LOCATE 10,5:PRINT NT%;" IBM LOCATIONS REMAIN"
- 1440 SC=SC+50:IF SC>HSC THEN HSC=SC
- 1450 LOCATE 12,5:PRINT "YOUR SCORE IS :";SC
- 1460 LOCATE 13,5:PRINT"THE HIGHEST SCORE IS:";HSC;" POINTS"
- 1470 RS%=RS%-1:IF RS%<0 THEN RS%=0
- 1480 LOCATE 19,5:PRINT"THE ENEMY'S WARHEAD PERFORMANCE ":PRINT" IS NOW ";RS%
- 1490 LOCATE 22,5:PRINT"DO YOU WISH TO PLAY AGAIN (Y/N)"
- 1500 K$=INKEY$:IF K$="" THEN 1500
- 1510 IF K$="N" OR K$="n" THEN CLS:END
- 1520 IF K$="y" OR K$="Y" THEN 1550
- 1530 GOTO 1500
- 1550 LOCATE 23,5:PRINT" CHANGE YOU WARHEAD SIZE? (Y/N) "
- 1560 K$=INKEY$:IF K$="n" OR K$="N" THEN GOTO 60
- 1570 IF K$="y" OR K$="Y" THEN GOSUB 1010:GOTO 60
- 1580 GOTO 1560
- 1590 END
- 1600 K$=RIGHT$(INKEY$,1):IF (K$="") THEN GOTO 110
- 1610 KK$=INKEY$:IF KK$<>"" GOTO 1610
- 1620 J=INSTR("HPMK"+CHR$(27),K$):ON J GOTO 1640,1660,1680,1700,1720
- 1630 GOTO 110
- 1640 SY=SY-10:IF SY<1 THEN SY=1
- 1650 GOTO 110
- 1660 SY=SY+10:IF SY>150 THEN SY=150
- 1670 GOTO 110
- 1680 X=X+10:IF X>298 THEN X=298
- 1690 GOTO 110
- 1700 X=X-10:IF X<5 THEN X=5
- 1710 GOTO 110
- 1720 B%=1
- 1730 GOTO 110
- 1740 ' COLOR MONITOR-MONOCHROME MONITOR SWITCH EMD 11-81
- 1750 CLS
- 1760 PRINT:PRINT"IF YOU WANT TO TOGGLE MONOCHROME/COLOR THEN;"
- 1770 PRINT" FOR COLOR PRESS - C"
- 1780 PRINT" FOR MONO PRESS - M"
- 1790 PRINT" FOR NO CHANGE PRESS ANY OTHER KEY."
- 1800 K$=INKEY$:IF K$="" GOTO 1800
- 1810 IF K$="C" OR K$="c" THEN GOSUB 1930:END
- 1820 IF K$="M" OR K$="m" THEN GOSUB 1850:END
- 1830 CLS
- 1840 PRINT"@@@@@@@@@@@@ NO CHANGE @@@@@@@@@@@@@@":END
- 1850 REM switch to monochrome adapter
- 1860 DEF SEG=0
- 1870 POKE &H410,(PEEK(&H410) OR &H30)
- 1880 DEF SEG
- 1890 LOCATE ,,1,12,13
- 1900 SCREEN 0
- 1910 WIDTH 80
- 1920 RETURN
- 1930 REM switch to color/graphics adapter
- 1940 DEF SEG=0
- 1950 POKE &H410,(PEEK(&H410) AND &HCF) OR &H20
- 1960 DEF SEG
- 1970 LOCATE ,,1,6,7
- 1980 SCREEN 0
- 1990 WIDTH 40
- 2000 RETURN
- 10000 REM ++++++++ TEST LOGO FOR E. DAVIS PGMS.. 7/82 +++++++++++++
- 10010 CLS:SCREEN 1,0:COLOR 0,1:KEY OFF
- 10020 LINE (20,40)-(160,40):LINE -(166,50):LINE -(40,50)
- 10030 LINE -(87,120):LINE -(112,120):LINE -(120,130):LINE -(80,130)
- 10040 LINE (20,40)-(80,130)
- 10050 LINE(20,40)-(0,70):LINE -(60,160):LINE -(100,160)
- 10060 LINE(60,160)-(80,130):LINE(100,160)-(120,130):LINE (166,50)-(146,80):LINE -(60,80)
- 10070 LINE (66,170)-(71,160)
- 10080 LINE(66,170)-(86,200):LINE -(200,30):LINE -(180,0):LINE -(152,40)
- 10090 LINE (125,80)-(98,120):LINE (180,0)-(190,0)
- 10100 LINE-(210,30):LINE -(200,30)
- 10110 LINE (210,30)-(97,200)' RIGHT HAND PIC
- 10120 LINE(204,40)-(230,40):LINE-(290,130):LINE-(142,130)
- 10130 LINE(198,50)-(222,50):LINE -(270,120):LINE -(150,120)
- 10140 LINE (178,80)-(203,80):LINE -(222,50):LINE (203,80)-(230,120)
- 10150 LINE (290,130)-(270,160):LINE -(122,160):LINE (85,200)-(98,200)
- 10160 PAINT (140,100),3,3
- 10170 PAINT (160,100),1,3:PAINT (100,70),1,3:PAINT (150,150),1,3:PAINT (200,70),1,3:PAINT (100,150),1,3
- 10180 PAINT (40,100),3,3:PAINT (240,100),3,3
- 10190 PAINT (65,100),2,3:PAINT (260,100),2,3:PAINT (195,20),2,3
- 10200 N=N+1:IF N=4 THEN RETURN
- 10210 FOR I=1 TO 300:COLOR 0,0:NEXT I
- 10220 LOCATE 2,8:PRINT"DAVIS DISK"
- 10230 LOCATE 23,25:PRINT" "
- 10240 FOR I=1 TO 300:COLOR 0,1:NEXT
- 10250 LOCATE 2,8:PRINT" "
- 10260 LOCATE 23,25:PRINT CHR$(1)+" ENJOY! "+CHR$(1)
- 10270 GOTO 10200
-